package com.base.themvx.utils.filetask

import com.drake.net.component.Progress
import com.drake.net.interfaces.ProgressListener
import java.io.File

/**
 ******************(^_^)***********************<br>
 * Author: fee(QQ/WeiXin:1176610771)<br>
 * Date: 2022/8/15<br>
 * Time: 09:53<br>
 * <P>DESC:
 * 文件上传/下载 进度监听
 * </p>
 * ******************(^_^)***********************
 */
open class TaskProgressListener : ProgressListener(interval = 1000) {

    /**
     * 当前下载的资源 Url
     */
    var mTaskUrl: String? = ""

    /**
     * 任务的异常信息
     */
    var mTaskErrorInfo: String? = ""

    fun withError(error: String?): TaskProgressListener {
        mTaskErrorInfo = error
        return this
    }

    protected var realProgress: Progress? = null

    override fun onProgress(p: Progress) {
        val isFinish = p.finish
        realProgress = p
        if (!isFinish){
            //当前下载的进度：0~100
            val progressPercent = p.progress()
            onTaskProgress(false, progressPercent, null, "")
        }
    }

    /**
     * 当前的任务是否正常
     */
    fun isTaskOk() = mTaskErrorInfo.isNullOrBlank()

    /**
     * 任务的进度状态更新回调
     * @param isFinish true: 任务已经完成
     * @param progressPercent 任务进度百分比：0～100
     * @param targetFile 下载任务时的最终存储文件
     * @param error 异常信息
     */
    open fun onTaskProgress(
        isFinish: Boolean,
        progressPercent: Int,
        targetFile: File?,
        error: String? = ""
    ) {

    }
}